package rhc.discribute.util;

import org.quartz.Job;

/**定时更新接口
 * @author rhc
 *
 */
public interface ScheduleUpdate{

	/**更新类型，定时更新或根据crontab表达式
	 * @author rhc
	 *
	 */
	public static enum ScheduleType{
		CRON("cron",""),TIMEINTERVAL("time_inerval","");
		public String typeName;
		public String desc;
		
		ScheduleType(String typeName,String desc){
			this.typeName=typeName;
			this.desc=desc;
		}
	}
	
	public static final String SCHEDULE_UPDATE="schedule_update";
	
	/**获取标识符
	 * @return
	 */
	String getId();
	
	/**获取更新类型
	 * @return
	 */
	ScheduleType getScheduleType();
	
	/**获取更新间隔
	 * @return
	 */
	int getTimeInterval();
	
	/**是否一直运行下去，不是则获取运行次数
	 * @return
	 */
	boolean isForever();
	
	/**运行次数
	 * @return
	 */
	int runCount();
	
	/**是否直接运行
	 * @return
	 */
	boolean startNow();
	
	/**获取crontab表达式
	 * @return
	 */
	String getCron();
	
	/**获取job类
	 * @return
	 */
	Class<? extends Job> getJobClass();
}
